/**
 * 作者：7years
 * 创建时间：Thu Nov 21 2024 10:59:49 GMT+0800 (中国标准时间)
 *
 * MainLayer 界面或弹窗的描述
 */

import { _decorator, Button, Color, Label, Sprite } from 'cc';
import EventCenter from './core/event/EventCenter';
import { EventConst } from './core/event/EventConst';
import { IUIArgs, UIBase } from './core/uiBase/UiBase';
import { quickBind } from './core/uitls/Decorator';
const { ccclass, property } = _decorator;


export interface IMainLayerArgs extends IUIArgs {

}

@ccclass('MainLayer')
export class MainLayer extends UIBase {

    @quickBind('Label', Label)
    protected lbl!: Label


    @quickBind('SpriteSplash', Sprite)
    protected SplashSpr!: Sprite

    @quickBind('Label01', Label, true)
    protected Label01!: Label


    private _count: number = 0;
    /**
    * 在节点首次激活时触发，比如所在的场景被载入，或者所在节点被激活的情况下。
    * 在 onLoad 阶段，保证了你可以获取到场景中的其他节点，以及节点关联的资源数据。
    * 生命周期函数顺序：onLoad => onEnable => start => update => lateUpdate
    */
    protected onLoad(): void {
        super.onLoad();

        this.lbl.string = 'Hello World!';
        this.SplashSpr.color = Color.RED;
        this.Label01.color = Color.GREEN;
        this.Label01.string = '点击红色按钮试试看！'

        this.SplashSpr.node.getOrAddComponent(Button).setClickListener(this.node, 'MainLayer', "onClick")

        this.initListeners();
    }

    onClick() {
        this.Label01.string = 'v我50看看你的实力'
        this._count++;
        if (this._count < 3) {
            this.Label01.string = '你还没到3次呢！'
        }
        if (this._count >= 3) {
            this.Label01.string = '你够了！'
        }
        if(this._count==5){
            EventCenter.getInstance().fire(EventConst.CLICK_CALLBACK)
        }
    }


    initListeners() {
        EventCenter.getInstance().listen(EventConst.CLICK_CALLBACK, this.onClickCallback, this)
    }


    onClickCallback() {
        this.Label01.string = '吊毛不要再点了啊！'
    }

    /**
    * 当组件的 enabled 属性从 false 变为 true 时，或者所在节点的 active 属性从 false 变为 true 时，会激活 onEnable 回调。
    * 倘若节点第一次被创建且 enabled 为 true，则会在 onLoad 之后，start 之前被调用。
    */
    protected onEnable(): void {
        super.onEnable();
    }

    /**
    * 当组件的 enabled 属性从 true 变为 false 时，或者所在节点的 active 属性从 true 变为 false 时，会激活 onDisable 回调。
    */
    protected onDisable(): void {
        super.onDisable();
    }

    /**
    * 在组件第一次激活前，也就是第一次执行 update 之前触发。
    */
    protected start(): void {
        super.start();
    }

    /**
    * 当组件或者所在节点调用了 destroy()，则会调用 onDestroy 回调，并在当帧结束时统一回收组件。
    */
    protected onDestroy(): void {
        super.onDestroy();
    }

    /**
     * 初始化参数，由 UIMgr 在打开界面时调用
     * @param uiArgs 
     */
    initArgs(uiArgs?: IMainLayerArgs): void {
        super.initArgs(uiArgs);
    };

    /**
     * 使用 ccc.gamesdk.Message.addMessage 添加所有的监听事件。
     * onEnable 时自动调用，组件失效时自动移除通过 ccc.gamesdk.Message.addMessage 添加的所有事件。
     * 注意：不是用 ccc.gamesdk.Message 添加的事件，需要重载父类 removeAllMsgs 方法，并自己移除。
     */
    addAllMsgs() {
        super.addAllMsgs();
    }
}
